package com.gather.arraylists;

import com.gather.orm.Book;

import java.util.*;

public class Example02 {
    public static void main(String[] args) {
        System.out.println("回顾一下集合学习");
        // 单列集合
        // List
        ArrayList<String> strList = new ArrayList<>();
        strList.add("a");
        strList.add("b");
        strList.add("c");
        strList.add("c");
        System.out.println("strList"+strList);
        // Set
        TreeSet<String> treeSet = new TreeSet<String>();
        treeSet.add("kerry");
        treeSet.add("测试");
        treeSet.add("b");
        treeSet.add("a");
        System.out.println("treeSet "+treeSet); // treeSet [a, b, kerry, 测试]
        HashSet<String> strSet = new HashSet<>();
        strSet.add("curry");
        strSet.add("jack");
        strSet.add("tom");
        strSet.add("curry");
        System.out.println("hashSet 无序集合"+strSet);
        // Map集合
        HashMap<String, String> stringStringHashMap = new HashMap<>();
        stringStringHashMap.put("name1","北京");
        stringStringHashMap.put("name2","广东");
        stringStringHashMap.put("name3","深圳");
        System.out.println("stringStringHashMap "+stringStringHashMap);

        /**
         * iterator 使用
         */
        // 遍历
        Iterator<String> iterator = strList.iterator();
        while (iterator.hasNext()) {
            String next =  iterator.next();
            System.out.println(next);
        }
        /**
         * 注意当使用了 iterator 迭代器遍历过一次集合
         * 这时指针已经在最后面了，如果再获取，就超出了
         * 范围，调用iterator.next() 会抛出
         * NoSuchElementException 异常，如果需要再次
         * 遍历集合，就需要重置迭代器 iterator
         */
        // 不存在下一个元素 报错 NoSuchElementException 异常
        //iterator.next();
        // 重置迭代器 iterator
        iterator = strList.iterator();
        while (iterator.hasNext()) {
            String next = iterator.next();
            System.out.println(next);
        }
        System.out.println("==== books ====");
        // 添加书籍对象
        ArrayList<Book> books = new ArrayList<>();
        books.add(new Book("三国演义","罗贯中",50.3));
        books.add(new Book("西游记","吴承恩",20.5));
        books.add(new Book("红楼梦","曹雪芹",10.2));
        books.add(new Book("水浒传","施耐庵",34.6));
        System.out.println("book "+books);
        // 使用迭代器遍历
        Iterator<Book> booksIterator = books.iterator();
        while (booksIterator.hasNext()) {
            Book next = booksIterator.next();
            System.out.println("书本名著："+next.getName()+" ,作者："+next.getAuthor()+", 价格："+next.getPrice());
        }
        System.out.println("--------------");
        // 等同 iterator（） 迭代器循环
        // 快捷键 大写 I
        for (Book book : books) {
            System.out.println("书本名著："+book.getName()+" ,作者："+book.getAuthor()+", 价格："+book.getPrice());
        }
    }
}
